services/spm_deprecated: permit timer sysreg access at S-EL0
authorArd Biesheuvel <[email protected]>
Tue, 1 Jan 2019 10:01:41 +0000 (11:01 +0100)
committerArd Biesheuvel <[email protected]>
Tue, 8 Jan 2019 14:24:16 +0000 (15:24 +0100)
Expose the timer registers that are accessible at EL0 per the
architecture to the SPM payload running in secure EL0. Note
that this requires NS_TIMER_SWITCH to be enable for all users
of this code.

Signed-off-by: Ard Biesheuvel <[email protected]>
services/std_svc/spm_deprecated/spm.mk
services/std_svc/spm_deprecated/spm_setup.c

index ed36812f9bf11254a3d64a290dc5b23751db4b13..35030206bab3104eb9cfac1a537bdc7fdbdafd86 100644 (file)
@@ -21,3 +21,6 @@ SPM_SOURCES   :=      $(addprefix services/std_svc/spm_deprecated/, \
 
 # Let the top-level Makefile know that we intend to include a BL32 image
 NEED_BL32              :=      yes
+
+# required so that SPM code executing at S-EL0 can access the timer registers
+NS_TIMER_SWITCH                :=      1
index e78a42c72e2ee5d7ff6ab4215d265c19dffdc857..beaff946c376caade8078a6010d7bea3c98323d8 100644 (file)
@@ -168,6 +168,9 @@ void spm_sp_setup(sp_context_t *sp_ctx)
        write_ctx_reg(get_sysregs_ctx(ctx), CTX_VBAR_EL1,
                        SPM_SHIM_EXCEPTIONS_PTR);
 
+       write_ctx_reg(get_sysregs_ctx(ctx), CTX_CNTKCTL_EL1,
+                     EL0PTEN_BIT | EL0VTEN_BIT | EL0PCTEN_BIT | EL0VCTEN_BIT);
+
        /*
         * FPEN: Allow the Secure Partition to access FP/SIMD registers.
         * Note that SPM will not do any saving/restoring of these registers on